GradleからJettyを動かす+Deploy
概要
GradleからJetty動かして、何かしらのServeを行う。
内容
Gradle User Guide
http://www.monochromeroad.com/artifacts/gradle/userguide/userguide.html
の、
第10章 Webアプリケーションクイックスタート
http://www.monochromeroad.com/artifacts/gradle/userguide/web_project_tutorial.html
を参考に、
"Warプラグインについての詳細は26章War プラグイン、 Jettyプラグインの詳細については28章Jetty プラグインを参照してください。 Gradle配布物のsamples/webApplicationディレクトリにサンプルJavaプロジェクトがあります。"
とかあるので、適当にScriptをパクって、試す。
実践
単純に動かすだけなら、build.gradleに、
apply plugin : 'jetty'
と書くだけ、からの
gradle jettyRunWar
で
と表示されて、Jettyサーバが立ち上がる。
Gradleのwarコマンドと何かを関連づけておけば、このコマンドでwar内の生成物がjettyへとdeployされる。
⌘+.とかで終了できる。
アクセスしてみると、
testって名前のフォルダから実行した。
testフォルダ上には、Jettyの構成が出来ている。
Deploy
やりたいことは、
・Jettyに何かしらのアプリケーションをデプロイ。
実際には jettyRunWar コマンドは、warコマンドで生成したものを
deployする、との事なので、
warコマンドをbuild.gradleに書き加える。
apply plugin : 'jetty'
war {
baseName = 'someWebApp'
archiveName = "something"
from 'war'
manifest {
attributes 'Implementation-Title': 'something'
attributes 'Implementation-Version': 'some version'
attributes provider: 'gradle'
}
}
で、
warフォルダーを用意して、その中にindex.htmlを置いてみた。
実行してみる
war化時のmanifestから、アプリケーション名が反映されているのが判る。
で、
アクセスしてみる
run+deployをGradleの中から行う
ここからが本題、上記をgradleの中から行う。
(外側の別のGradleから実行してもいいんだけど、中からコントロールできた方が楽しい。)
実際に求めるコントロールは、
・とある条件を満たすまでは動いていて欲しい
・とある条件を満たしたら落ちて欲しい
という感じになる。
立ち上げっぱなしに対してタスクを与える的な動きは今回は意識しない。
参考として、JettyPluginConversionッつー規約集があったので、目を通してみる。
この時点でのbuild.gradleがこんな感じ
apply plugin : 'jetty'
war {
baseName = 'someWebApp'
archiveName = "something"
from 'war'
manifest {
attributes 'Implementation-Title': 'something'
attributes 'Implementation-Version': 'some version'
attributes provider: 'gradle'
}
}
task jettyRunTasks << {
/* httpPort = jettyConfig.port*/
println "jettyRun before..."
//mada yoku wakatte nai
jettyRunWar.daemon = false //no effect
println "getWebApp "+jettyRunWar.getWebApp() // /Users/sassembla/Desktop/test/build/libs/something
println "getJettyConfig "+jettyRunWar.getJettyConfig() //null
// jettyRunWar.restartWebApp(false)
// jettyRunWar.createServer() //creates something,,
jettyRunWar.startJetty() //Run!! but with eror..
// jettyRunWar.startJettyInternal() //same above
println "jettyRun...after"
}